import 'reflect-metadata';

let obj = {
  username: '罗师傅',
  age: 23,
  info() {
    console.log('信息');
  }
};

/**
 * 定义与取值 - 对象上定义
 */
Reflect.defineMetadata('metaObj', '我是obj对象的元数据', obj);
console.log(Reflect.getMetadata('metaObj', obj), obj);

/**
 * 对象属性上定义
 */
Reflect.defineMetadata('metaObj.username', '我是obj.username对象属性的元数据', obj, 'username');
console.log(Reflect.getMetadata('metaObj.username', obj, 'username'));

/**
 * 对象方法上定义
 */
Reflect.defineMetadata('metaObj.info', 'infoFn', obj, 'info');
console.log(Reflect.getMetadata('metaObj.info', obj, 'info'));
console.log(Reflect.hasMetadata('metaObj.info', obj, 'info')); // true
